package cn.zqy.demo2.day05.Exception;

/**
    子父类的异常:
        - 如果父类抛出了多个异常,子类重写父类方法时,抛出和父类相同的异常或者是父类异常的子类或者不抛出异常。
        - 父类方法没有抛出异常，子类重写父类该方法时也不可抛出异常。此时子类产生该异常，只能捕获处理，不能声明抛出
    注意:
        父类异常时什么样,子类异常就什么样
 */
public class Demo10FuZi {
    public void show01() throws NullPointerException,IndexOutOfBoundsException{}
    public void show02() throws IndexOutOfBoundsException{}
    public void show03() throws NullPointerException{}
    public void show04(){}
}

class Zi extends Demo10FuZi {
    // 1.子类重写父类方法时,抛出和父类相同的异常
    @Override
    public void show01() throws NullPointerException, IndexOutOfBoundsException { }

    //2.子类重写父类方法时,抛出父类异常的子类
    @Override
    public void show02() throws ArrayIndexOutOfBoundsException {}

    //3.子类重写父类方法时,不抛出异常
    @Override
    public void show03() {}

    //4.父类方法没有抛出异常，子类重写父类该方法时也不可抛出异常。
    //  此时子类产生该异常，只能捕获处理，不能声明抛出

    @Override
    public void show04(){
       try {
            throw new Exception("编译期异常");
       } catch (Exception e) {
           System.out.println(e);
       }
    }
}